package com.siwei.mes.mapper.materials;

import com.siwei.mes.common.base.BaseMapper;
import com.siwei.mes.entity.dto.SupplierCompanyDto;
import com.siwei.mes.entity.system.SupplierCompany;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 供应商(SupplierCompany)表数据库访问层
 *
 * @author linzi
 * @since 2024-07-16 16:40:41
 */
public interface SupplierCompanyMapper extends BaseMapper<SupplierCompany> {
    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<SupplierCompany> getList(SupplierCompany entity);

    /**
     * 根据id获取
     *
     * @param id
     * @return
     */
    SupplierCompany loadById(@Param("id") Long id);

    /**
     * 根据供应商名称查询
     *
     * @param supplierName 供应商名称
     * @return
     */
    SupplierCompany selectBySupplierName(@Param("supplierName") String supplierName);

    /**
     * 根据供应商名称 物料名称 物料类型 物料规格 查询
     *
     * @param supplierName 供应商名称
     * @param projectName 物料名称
     * @param projectSpecs 物料规格
     * @param projectCategory 物料类型
     * @return
     */
    SupplierCompany selectBySupplierNameMaterials(@Param("supplierName") String supplierName, @Param("projectName") String projectName,
                                         @Param("projectSpecs") String projectSpecs, @Param("projectCategory") Integer projectCategory);

    /**
     * 查询对应的供应商信息
     *
     * @param factory
     * @param projectName
     * @param projectSpecs
     * @param projectCategory
     * @return
     */
    SupplierCompany selectSupplierInfo(@Param("factory") String factory, @Param("projectName") String projectName,
                                       @Param("projectSpecs") String projectSpecs, @Param("projectCategory") Integer projectCategory);

    /**
     * 根据材料名称和材料规格获取所有的供应商信息
     *
     * @param materialsName 材料名称
     * @param materialsSpce 材料规格
     * @return
     */
    List<SupplierCompany> selectBySupplierCompanyList(@Param("materialsName") String materialsName, @Param("materialsSpec") String materialsSpce);


    /**
     * 根据物料名称和物料规格获取所有的供应商信息
     *
     * @param materialsName 材料名称
     * @param materialsSpce 材料规格
     * @return
     */
    List<SupplierCompany> selectByMaterialSupplierCompanyList(@Param("materialsType") Integer materialsType,@Param("materialsName") String materialsName, @Param("materialsSpec") String materialsSpce);

    /**
     * 根据ycId查询
     *
     * @param ycId
     * @return
     */
    SupplierCompany loadByYcId(@Param("ycId") Long ycId);

    List<SupplierCompanyDto> selectBySupplierCompanyListByType(@Param("materialsType") Integer materialsType,@Param("materialsName") String materialsName);
}
